perm filename AGRE.FRM[1,JRA] blob sn#423341 filedate 1979-03-04 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	∂04-Mar-79  1020	PEAGRE at MIT-MC (Philip E. Agre) 	''Functions ...'' and other Bytery 
C00012 ENDMK
C⊗;
∂04-Mar-79  1020	PEAGRE at MIT-MC (Philip E. Agre) 	''Functions ...'' and other Bytery 
Date: 4 MAR 1979 1214-EST
From: PEAGRE at MIT-MC (Philip E. Agre)
Subject: "Functions ..." and other Bytery
To: jra at SU-AI

John,  If you have your comments about "Function ..." in a file, could
you mail a copy of them to me?  The real-live Tech Report version of
it is due "any day now".  If your comments require phone-talk, msg me
that too and I'll give you a call.  Or you can call me, 301-454-5210.
I'll be here or at the phone all day.  With midterms coming on, I will
have less and less time to implement changes with each passing day,
so I am eager to hear from you.  On the other hand, I imagine you're
working like crazy...           - Phil Agre

∂04-Mar-79  1040	PEAGRE at MIT-MC (Philip E. Agre) 	''Functions ...'' revisions   
Date: 4 MAR 1979 1340-EST
From: PEAGRE at MIT-MC (Philip E. Agre)
Subject: "Functions ..." revisions
To: jra at SU-AI

John,  Don't worry about hurting my feelings by suggesting revisions:
for an unpublished author, the "i'd like to use your paper" is more
than enough to carry one through the "i'd like to revise your manuscript".
Regarding your suggestions, I am in favor of most of them.  The
reorganization is a really good idea.  Regarding dotted pairs, though,
if we're going to speak of the implementation of LISP, we gotta tell
folks the truth eventually.  Now it is possible to low-key it: act like
the dotted-pair notation is a sort of shorthand for the cons node s
structure which is really under consideration.  This approach would
be OK by me.  I'll leave SETQ vs. DEFINE to your judgement, but again
they have to be told the truth eventually.   There is just a gap
in the LISP definition which makes the dynamic addition of variables at
the lowest ("monitor") level not fit in with the rest of the structure
of the language (which can get away with just lambda-defining
all the variables it needs.  The "Functions ..." paper is about
*definition* and *implementation*, and I think it
would look a bit strange to get too far away from those.  The thing
was originally designed as a rebuttal to certain theoretical arguments
from very LISP-literate people like RG and (to a lesser
extent) GLS.  Considerable background was assumed.
     Anyway, what revisions do you want me to make and what ones do you
want to do yourself?  Anything that is intended to fit in the big
framework of the issue (such as the LAMBDA motivation) should be done
or at least laid out in detail by you, I think.  I can do the mundane
stuff if you don't want to.  Whatever.
     My trip to Stanford is in a bit of doubt right now.  It's alot of
money, and (if I may trust you) Stanford is far from my first choice.
(MIT, GJS in particular, is my first choice, with Stanford a
distant second, that is to say).  I'll keep you informed on that 
if it looks like a personal consultation is going to be necessary.
(The latter may tip my decision as to whether to make
the visit.)  Just got your 4 Mar 1039 PST letter...      Phil Agre
******************************************************************
∂04-Mar-79  1110	PEAGRE at MIT-MC (Philip E. Agre) 	My turn (fairly long and rambling) 
Date: 4 MAR 1979 1410-EST
From: PEAGRE at MIT-MC (Philip E. Agre)
Subject: My turn (fairly long and rambling)
To: jra at SU-AI

John,  OK, msg of 1045PST (specifics) are mostly ok,
but I'd feel strange having "A common sort of function in LISP..."
be the first paragraph in my paper.  If it were a chapter in a book,
then ok, but i'd like a little apparent independence, even if I am 
willing to accept 90% of your suggestions (which I am).  I was really
fond of the Abstract Data Types argument of chapter 1, but your version
of it in the intro was nice (and more succint).  In general, I always
like to start and end on a Philosophical note (like a Scientific
American article).
     Ok to incorporate necessary footnotes into text.  Speaking of
footnotes, the Chapter 9 scheme goes way back.  I just
implemented and extended the crude form of it which I got from (I think)
Hanan Samet, and which appears in my ref Steele&Sussman in
a footnote (Art of the Interpreter, note "This Ain't Alists").
I wanted to reference the original source of the idea, thinking it
was them, but removed the ref when I realized it was probably older.
In any event, I only extended it slightly and pointed out how neat it
is for CLOSURE's.)
     Re CLOSURE, do you motivate deep vs. shallow binding in the intro
or elsewhere?  I don't want to try to explain CLOSURE without that.
     I agree with your comment on my use of the word "function".
It *is* ambiguous, but purposefully so; it refers to the abstract
entity or the linker node (1 or 4 in ch. 1's decomposition), but
*not* to 2 or 3 (the abstract and concrete algorithms).
     Will the folks at BYTE redraw my figures?  Maybe you or someone
can XGP them (I used the GRAFIX font like you use in Anatomy,
but our printer has lousy resolution).
     Maybe a less complicated example in ch's 5 and 6; the DEFUN
example is a "wow" example.  It really wasn't appropriate, but
I felt I needed something to motivate being able to pass fexpr's
around like that.
     Oh well, have fun.
     - Phil Agre

∂04-Mar-79  1135	PEAGRE at MIT-MC (Philip E. Agre) 	bindings &c.   
Date: 4 MAR 1979 1435-EST
From: PEAGRE at MIT-MC (Philip E. Agre)
Subject: bindings &c.
To: jra at SU-AI

John,  If you can think of a cute way to explain closures, more
power to you.  I misspoke a bit, one needs static/dynamic to
understand closures (or so I meant to say in last msg), but
one needs deep/shallow to understand their implementation.
Compare my implementation of CLOSURE's in deep binding
system with Greenblatt's in shallow binding system.  His is gross,
mine is efficient.  In general, this is because Depp binding
supports context-change sorts of things, while shallow binding gives
one raw speed in non-fancy situations (although I don't really 
even believe that...)  In any event, the best solution is GLS's
in his Master's thesis, which is a real winning document.
     (BTW, Congratulations, you're the one millionth person
to come up with that play on my name.  But don't worry about it.)
     - Phil Agre